#include "Inf_BDR6120.h"
#include "driver/gpio.h"
#include "esp_task.h"

#define BDR_A GPIO_NUM_4
#define BDR_B GPIO_NUM_5

/**
 * @brief 初始化电机
 *
 */
void Inf_BDR6120_Init(void)
{
    // 初始化引脚
    gpio_config_t gpio = {};
    // 不适用中断
    gpio.intr_type = GPIO_INTR_DISABLE;
    // 输出模式
    gpio.mode = GPIO_MODE_OUTPUT;
    // 不使用上拉
    gpio.pull_up_en = GPIO_PULLUP_DISABLE;
    // 不使用下拉
    gpio.pull_down_en = GPIO_PULLDOWN_DISABLE;
    // 设置那个引脚
    gpio.pin_bit_mask = (1 << BDR_A) | (1 << BDR_B);
    gpio_config(&gpio);

    // 默认都是低电平
    gpio_set_level(BDR_A, 0);
    gpio_set_level(BDR_B, 0);
}

/**
 * @brief 开锁
 *
 */
void Inf_BDR6120_OpenLock(void)
{
    gpio_set_level(BDR_A, 1);
    gpio_set_level(BDR_B, 0);
    // 启动2秒
    vTaskDelay(100);

    // 急停
    gpio_set_level(BDR_A, 1);
    gpio_set_level(BDR_B, 1);
    // 停止2秒
    vTaskDelay(200);

    // 反转
    gpio_set_level(BDR_A, 0);
    gpio_set_level(BDR_B, 1);
    // 启动2秒
    vTaskDelay(100);

    // 急停
    gpio_set_level(BDR_A, 1);
    gpio_set_level(BDR_B, 1);
}